home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Monster Media 1996 #15
/
Monster Media Number 15 (Monster Media)(July 1996).ISO
/
pcboard
/
dms110.zip
/
DMS001.ACP
/
DMS.PPE
(
.txt
)
< prev
next >
Wrap
PCBoard Programming Language Executable
|
1996-06-16
|
36KB
|
2,309 lines
;------------------------------------------------------------------------------
; .ss.
; `²²'
; .,sS$Ss,,s$ .,sS$$$Ss. .,sS$Ss,,s$ .ss. .sSs.
; .d$$²^°²$$$$'.d$P²°^^²$P'.d$$²^°²$$$$'.$$$' .$$$²Sb,.
; $$$' .$$$' $$$²Sçsµ²' .$$$' .$$$'.$$$' .$$$' `$$b.
; $$$b,,d$$$' ,$$$b,....,s$$$$b,,d$$$'.$$$;.,$$$' ;$$$
; `²S$$S²²S$$S²°²S$$$$S²°°²S$$$$$$',$$S²°²S$S'.sS$$$P²'
; .sS²°$$$²²°"' d²°'
; .$$² .$$'
; $$$.,d$$'
; `²S$$S²'
;------------------------------------------------------------------------------
; P.P.L.X. 2.OO (C)1996 - Lone Runner / AEGiS CoRP'96
;------------------------------------------------------------------------------
; PPE 3.1O (Encryption type I) - Analysis ON - Postprocessing ON
;------------------------------------------------------------------------------
Boolean BOOLEAN001
Boolean BOOLEAN002
Boolean BOOLEAN003
Boolean BOOLEAN004
Boolean BOOLEAN005
Boolean BOOLEAN006
Boolean BOOLEAN007
Boolean BOOLEAN008
Boolean BOOLEAN009
Boolean BOOLEAN010
Boolean BOOLEAN011
Boolean BOOLEAN012
Boolean BOOLEAN013
Boolean BOOLEAN014
Boolean BOOLEAN015
Boolean BOOLEAN016
Boolean BOOLEAN017
Boolean BOOLEAN018
Boolean BOOLEAN020
Boolean BOOLEAN021
Date DATE001
Date DATE002
Integer INTEGER001
Integer INTEGER002
Integer INTEGER003
Integer INTEGER004
Integer INTEGER005
Integer INTEGER006
Integer INTEGER008
Integer INTEGER009
Integer INTEGER011
String STRING002
String STRING003
String STRING004
String STRING005
String STRING006
String STRING007
String STRING008
String STRING009
String STRING010
String STRING011
String STRING012
String STRING013
String STRING014
String STRING015
String STRING016
String STRING017
String STRING018
String STRING019
String STRING020
String STRING021
String STRING022
String STRING023
String STRING024
String STRING025
String STRING026
String STRING027
String STRING028
String STRING032
String STRING033
String STRING034
String STRING036
String STRING037
String STRING040
String STRING041
String STRING042
String STRING043
String STRING045
String STRING046
String STRING047
String STRING048
String STRING049
String STRING050
String STRING051
String STRING052
String STRING054
String STRING057
String STRING063
String STRING064
String STRING065
String STRING066
String STRING067
String STRING068
String STRING074
String STRING076
String STRING077
String STRING078
Time TIME001
Byte BYTE001
Byte BYTE002
Byte BYTE003
Byte BYTE004
Byte BYTE005
Byte BYTE006
Byte BYTE007
Byte BYTE008
Byte BYTE009
Byte BYTE010
Byte BYTE011
Byte BYTE012
Byte BYTE013
Byte BYTE014
Byte BYTE015
Byte BYTE016
Byte BYTE017
Byte BYTE018
Byte BYTE019
Byte BYTE020
Byte BYTE021
Byte BYTE022
Byte BYTE023
Byte BYTE024
Byte BYTE025
Byte BYTE026
Byte BYTE027
Byte BYTE028
Byte BYTE029
Byte BYTE030
Byte BYTE031
Byte BYTE032
Byte BYTE033
Byte BYTE035
Byte BYTE037
Byte BYTE038
Byte BYTE039
Byte BYTE040
Byte BYTE041
Byte BYTE042
Byte BYTE043
Byte BYTE044
Byte BYTE045
Byte BYTE046
Byte BYTE047
Byte BYTE048
Byte BYTE053
Byte BYTE054
Byte BYTE055
Byte BYTE060
Byte BYTE061
Byte BYTE062
Byte BYTE063
Byte BYTE064
Byte BYTE065
Byte BYTE066
Byte BYTE067
Byte BYTE069
Byte BYTE070
Byte BYTE071
Byte BYTE072
Byte BYTE073
Byte BYTE074
Byte BYTE075
Byte BYTE076
Byte BYTE077
Byte BYTE078
Byte BYTE080
Byte BYTE082
Byte BYTE085
Byte BYTE086
Byte BYTE090
Byte BYTE091
Word WORD001
Word WORD002
Word WORD003
Word WORD004
Word WORD005
Word WORD006
Word WORD007
Word WORD008
Word WORD009
Word WORD010
Word WORD011
Word WORD012
Word WORD013
Word WORD014
Word WORD015
BigStr BIGSTR001
Declare Function FUNCTION001(String STRING060, String STRING061, String STRING062) Boolean
Declare Function FUNCTION002(Byte BYTE049, Byte BYTE050, Byte BYTE051, Byte BYTE052, String STRING035) Byte
Declare Function FUNCTION003(Integer INTEGER012, String STRING056) Boolean
Declare Function FUNCTION004(Integer INTEGER013, String STRING073) Boolean
Declare Function FUNCTION005(Byte BYTE079) Boolean
Declare Function FUNCTION006(Byte BYTE083) Boolean
Declare Procedure PROC001(Boolean BOOLEAN019)
Declare Procedure PROC002()
Declare Procedure PROC003(String STRING031)
Declare Procedure PROC004(Var Byte BYTE036)
Declare Procedure PROC005(String STRING044, Byte BYTE068)
Declare Procedure PROC006(String STRING053)
Declare Procedure PROC007(String STRING038, String STRING039)
Declare Procedure PROC008(Byte BYTE056, Byte BYTE057, Byte BYTE058, Byte BYTE059)
Declare Procedure PROC009(String STRING069)
Declare Procedure PROC010(Byte BYTE087, Var String STRING070, Var Byte BYTE088, Var String STRING071, Var Byte BYTE089, Var String STRING072)
Declare Procedure PROC011(Byte BYTE034, Var String STRING029, Integer INTEGER007, String STRING030)
Declare Procedure PROC012(Integer INTEGER010, String STRING055)
Declare Procedure PROC013(Word WORD016, String STRING075)
Declare Procedure PROC014()
Declare Procedure PROC015(Byte BYTE081, Var String STRING058)
Declare Procedure PROC016(Byte BYTE084, Var String STRING059)
;------------------------------------------------------------------------------
STRING002 = "DECOMPILATION OF COPYRIGHTED MATERIAL IS ILLEGAL"
STRING002 = "v1.10"
STRING003 = "Release"
BYTE027 = 0
BYTE028 = 0
STRING028 = ""
STRING003 = "<Compiled: 06-22-1996 16:48:49 " + STRING003 + ">"
Print "@QOFF@"
Color 7
If (GrafMode() == "R") Then
Cls
MPrintLn
MPrintLn "!|1K|*|w0000270N12|10$SBARON$|#|#|#"
Color 31
Color 7
Endif
If ((Exist(PPEPath() + PPEName() + ".CFG") == 0) && (TokCount() == 0)) PROC003("(Error) Non-Existing ""DMS.CFG"" Config File")
FOpen 1, PPEPath() + PPEName() + ".CFG", 2, 0
FRead 1, BYTE025, 1
If ((BYTE025 < 2) && (TokCount() == 0)) Then
PROC003("(Error) Out-Dated ""DMS.CFG"" Config Version")
ElseIf ((BYTE025 > 2) && (TokCount() == 0)) Then
PROC003("(Error) Invalid/Unknown ""DMS.CFG"" Config Version")
Endif
If ((FileInf(PPEPath() + "DMS.CFG", 4) <> 734) && (TokCount() == 0)) Then
PROC003("(Error) Invalid ""DMS.CFG"" Config File-Format")
Endif
PROC011(1, STRING004, 64, "Unknown")
PROC011(1, STRING005, 25, "Sysop")
PROC011(1, STRING006, 20, "0")
FRead 1, STRING020, 2
BOOLEAN001 = (Right(STRING020, 1) == "Y")
FRead 1, STRING020, 2
BOOLEAN003 = (Right(STRING020, 1) == "Y")
FRead 1, STRING020, 2
BOOLEAN004 = (Right(STRING020, 1) == "Y")
FRead 1, STRING020, 2
BOOLEAN002 = (Right(STRING020, 1) == "Y")
FRead 1, STRING020, 2
BOOLEAN005 = (Right(STRING020, 1) == "Y")
FRead 1, STRING020, 2
BOOLEAN006 = (Right(STRING020, 1) == "Y")
FRead 1, STRING020, 2
BOOLEAN007 = (Right(STRING020, 1) == "Y")
FRead 1, STRING020, 2
BOOLEAN008 = (Right(STRING020, 1) == "Y")
FRead 1, STRING020, 2
BOOLEAN009 = (Right(STRING020, 1) == "Y")
FRead 1, STRING020, 2
BYTE032 = Right(STRING020, 1)
PROC011(1, STRING007, 64, PPEPath())
PROC011(1, STRING008, 64, PPEPath())
PROC011(1, STRING009, 64, PPEPath())
PROC011(1, STRING023, 64, PPEPath())
FSeek 1, 231, 1
PROC011(1, STRING026, 12, "STATS")
PROC011(1, STRING027, 12, "NEWS")
PROC011(1, STRING024, 12, "WELCOME")
PROC011(1, STRING025, 12, "GOODBYE")
PROC011(1, STRING012, 12, "HELP")
FRead 1, DATE001, 2
If (DATE001 == 0) Then
DATE001 = Date() + 30
FSeek 1, -2, 1
FWrite 1, DATE001, 2
Endif
FRead 1, STRING020, 1
BYTE001 = Asc(STRING020)
FRead 1, STRING020, 1
BYTE002 = Asc(STRING020)
FRead 1, STRING020, 1
BYTE003 = Asc(STRING020)
FRead 1, STRING020, 1
BYTE004 = Asc(STRING020)
FRead 1, STRING020, 1
BYTE005 = Asc(STRING020)
FRead 1, STRING020, 1
BYTE006 = Asc(STRING020)
FRead 1, STRING020, 1
BYTE007 = Asc(STRING020)
FRead 1, STRING020, 1
BYTE008 = Asc(STRING020)
FRead 1, STRING020, 1
BYTE009 = Asc(STRING020)
FRead 1, STRING020, 1
BYTE010 = Asc(STRING020)
FRead 1, STRING020, 1
BYTE011 = Asc(STRING020)
FRead 1, STRING020, 1
BYTE012 = Asc(STRING020)
FRead 1, STRING020, 1
BYTE013 = Asc(STRING020)
FRead 1, STRING020, 1
BYTE014 = Asc(STRING020)
FRead 1, STRING020, 1
BYTE015 = Asc(STRING020)
FRead 1, STRING020, 1
BYTE016 = Asc(STRING020)
FRead 1, STRING020, 1
BYTE017 = Asc(STRING020)
FRead 1, STRING020, 1
BYTE018 = Asc(STRING020)
FRead 1, STRING020, 1
BYTE019 = Asc(STRING020)
FRead 1, STRING020, 1
BYTE020 = Asc(STRING020)
FRead 1, STRING020, 1
BYTE021 = Asc(STRING020)
FRead 1, STRING020, 1
BYTE022 = Asc(STRING020)
FRead 1, STRING020, 1
BYTE023 = Asc(STRING020)
FRead 1, STRING020, 1
BYTE024 = Asc(STRING020)
FRead 1, STRING020, 2
BOOLEAN010 = (Right(STRING020, 1) == "Y")
FRead 1, STRING020, 2
BOOLEAN011 = (Right(STRING020, 1) == "Y")
PROC011(1, STRING014, 12, "BCKGRND")
FRead 1, STRING020, 2
BOOLEAN012 = (Right(STRING020, 1) == "Y")
FClose 1
If (BYTE032 <> 0) Then
BYTE033 = 0
If (BYTE032 == "1") Then
STRING020 = U_Cmnt2
ElseIf ((BYTE032 >= "2") && (BYTE032 <= "6")) Then
STRING020 = U_Notes(BYTE032 - 2)
ElseIf (BYTE032 == "7") Then
TpaGet "BDATE", STRING020
Else
BYTE033 = 255
Endif
If (BYTE033 <> 255) Then
BYTE033 = Year(Date()) - Year(STRING020) - 1
If ((Month(Date()) > Month(STRING020)) || ((Month(Date()) == Month(STRING020)) && (Day(Date()) >= Day(STRING020)))) Inc BYTE033
Endif
Else
BYTE033 = 255
Endif
STRING017 = ""
If (Exist(STRING008 + "DMSTEXT" + LangExt())) STRING017 = LangExt()
If (Exist(STRING008 + "DMSTEXT" + STRING017) == 0) Then
PROC003("(Error) Non-Existing ""DMSTEXT"" Text File")
Endif
If (!Exist(STRING007 + "DMS" + String(CurConf()) + ".CNF") && (!BOOLEAN006 || (CurConf() == 0))) Then
DispText 276, 2048 + 32768 + 64 + 128
Newline
Wait
PROC001(1)
Endif
STRING018 = STRING008 + "DMSTEXT" + STRING017
STRING004 = RTrim(STRING004, Chr(32))
STRING005 = RTrim(STRING005, Chr(32))
If (BOOLEAN001) Then
Log "Caller Logging Activated", 0
Log "-- Door Menu System (Opened) at (" + String(Time()) + ") --", 1
Log "Board : " + STRING004, 0
Log "Sysop : " + STRING005, 0
If (FUNCTION001(STRING004, STRING005, STRING006)) Log "* Registered Copy * (Thanks)", 0
Endif
If (BOOLEAN010) PROC014()
If (BOOLEAN002) Then
RdUNet PcbNode()
If (ChatStat()) Then
WrUNet PcbNode(), "A", UN_Name(), "Door Menu System", "", ""
Goto LABEL001
Endif
WrUNet PcbNode(), "U", UN_Name(), "Door Menu System", "", ""
Endif
:LABEL001
If ((FUNCTION001(STRING004, STRING005, STRING006) == 0) || (BOOLEAN003 == 1)) Then
PROC002()
Newline
If (Exist(STRING009 + STRING024)) Goto LABEL002
FCreate 1, STRING009 + STRING024, 2, 0
FClose 1
:LABEL002
DispFile STRING009 + STRING024, 1 + 4 + 2
Delay 10
If (FUNCTION001(STRING004, STRING005, STRING006) == 0) If BOOLEAN001 Log "- Unregistered Evaluation Copy -", 0
If ((FUNCTION001(STRING004, STRING005, STRING006) == 0) && (Date() >= DATE001)) Then
Newline
Color 7
PrintLn "[THIRTY DAY EVALUATION PERIOD EXPIRED]"
Delay 150
Endif
Else
Newline
If (Exist(STRING009 + STRING024)) Goto LABEL003
FCreate 1, STRING009 + STRING024, 2, 0
FClose 1
:LABEL003
DispFile STRING009 + STRING024, 1 + 4 + 2
Endif
StartDisp 1
If (Exist(STRING009 + STRING027) && ((FileInf(STRING009 + STRING027, 2) > U_LDate()) || ((FileInf(STRING009 + STRING027, 2) == U_LDate()) && (FileInf(STRING009 + STRING027, 3) >= U_LTime())))) Then
Color 7
Cls
StartDisp 2
Print "@QON@"
DispFile STRING009 + STRING027, 1 + 4 + 2
Newline
Wait
StartDisp 1
Print "@QOFF@"
Endif
If (TokCount() <> 0) Then
GetToken STRING020
While (TokCount() <> 0) Do
STRING028 = STRING028 + GetToken() + Chr(59)
EndWhile
STRING028 = RTrim(STRING028, Chr(59))
STRING019 = STRING020
If (FUNCTION004(1, STRING020)) Goto LABEL004
If (Left(STRING021, Len(STRING019)) == STRING019) Then
PROC013(WORD001 - 1, STRING020)
PROC001(0)
Goto LABEL004
Endif
PROC009(ReadLine(STRING018, 26))
PROC001(0)
:LABEL004
PROC013(WORD001 - 1, STRING020)
PROC001(0)
Endif
Cls
:LABEL005
If (((GrafMode() == "R") || (GrafMode() == "G")) && Exist(STRING009 + STRING014)) DispFile STRING009 + STRING014, 1 + 4 + 2
PROC004(BYTE029)
PROC010(BYTE029, STRING022, BYTE030, STRING020, BYTE031, STRING015)
If (BOOLEAN001) Log "Selected [" + String(BYTE029) + "] Category", 0
If ((BYTE030 > CurSec()) || (BYTE031 > BYTE033)) Then
PROC009(ReplaceStr(ReadLine(STRING018, 17), "@AREA@", STRING022))
Color 7
Cls
Goto LABEL005
Endif
Cls
If ((Len(RTrim(STRING015, Chr(32))) == 0) && BOOLEAN012) STRING015 = STRING014
If (((GrafMode() == "R") || (GrafMode() == "G")) && Exist(STRING009 + STRING015)) DispFile STRING009 + STRING015, 1 + 4 + 2
PROC007(STRING022, STRING020)
Color 7
Cls
Goto LABEL005
End
;------------------------------------------------------------------------------
Procedure PROC011(Byte BYTE034, Var String STRING029, Integer INTEGER007, String STRING030)
Byte BYTE035
FRead BYTE034, BYTE035, 1
FRead BYTE034, STRING029, BYTE035
FSeek BYTE034, INTEGER007 - BYTE035, 1
If (Len(RTrim(STRING029, Chr(32))) == 0) STRING029 = STRING030
EndProc
;------------------------------------------------------------------------------
Procedure PROC003(String STRING031)
Newline
Print STRING031
Newline
Log "[DMS] " + STRING031, 0
PROC001(1)
EndProc
;------------------------------------------------------------------------------
Procedure PROC004(Var Byte BYTE036)
Byte BYTE037
Byte BYTE038
Byte BYTE039
Byte BYTE040
Byte BYTE041
Byte BYTE042
Byte BYTE043
Byte BYTE044
Byte BYTE045
Byte BYTE046
Byte BYTE047
Byte BYTE048
String STRING032
String STRING033
String STRING034
Boolean BOOLEAN013
Word WORD006
If (!Exist(STRING007 + "DMS" + String(CurConf()) + ".CNF") && BOOLEAN006) Then
If (BOOLEAN001) Log "Defaulting to ""Main Board"" Conference", 0
WORD006 = 0
Else
WORD006 = CurConf()
Endif
INTEGER001 = (FileInf(STRING007 + "DMS" + String(WORD006) + ".CNF", 4) - 1) / 60
If ((FUNCTION001(STRING004, STRING005, STRING006) == 0) && (INTEGER001 > 4)) INTEGER001 = 4
BYTE046 = INTEGER001 / 17
If (INTEGER001 % 17 <> 0) Inc BYTE046
If (BYTE027 <> 0) Then
INTEGER002 = BYTE027
BYTE027 = 0
Else
INTEGER002 = 0
Endif
If (INTEGER001 > 17) INTEGER001 = 17
:LABEL006
BOOLEAN013 = 0
If ((GrafMode() <> "A") && (GrafMode() <> "N")) Then
BYTE037 = 15
BYTE039 = 12 - 3 + INTEGER001 / 2
BYTE038 = 65
BYTE040 = 12 + 3 + INTEGER001 / 2
If (INTEGER001 % 2 == 0) Dec BYTE040
If (BYTE028 <> 0) Then
BYTE044 = BYTE028
BYTE028 = 0
Goto LABEL007
Endif
BYTE044 = 0
:LABEL007
PROC008(BYTE037, BYTE039, BYTE038, BYTE040)
STRING033 = ReadLine(STRING018, 2)
AnsiPos 40 - Len(StripAtx(STRING033)) / 2, BYTE039 + 1
Print STRING033
STRING033 = ReadLine(STRING018, 3)
AnsiPos 40 - Len(StripAtx(STRING033)) / 2, BYTE040 - 1
Print STRING033
Endif
FOpen 1, STRING007 + "DMS" + String(WORD006) + ".CNF", 2, 0
If ((FileInf(STRING007 + "DMS" + String(WORD006) + ".CNF", 4) - 1) % 60 <> 0) Then
PROC009(" - Invalid ""DMS" + String(WORD006) + ".CNF"" Area File-Format - ")
PROC001(0)
Endif
FRead 1, BYTE025, 1
If (BYTE025 < 2) Then
PROC009(" - Out-Dated ""DMS" + String(WORD006) + ".CNF"" Config Version - ")
PROC001(0)
ElseIf (BYTE025 > 2) Then
PROC009(" - Invalid/Unknown ""DMS" + String(WORD006) + ".CNF"" Config Version - ")
PROC001(0)
Endif
While (0 == 0) Do
If ((GrafMode() == "A") || (GrafMode() == "N")) Then
Newline
OpText String(BYTE044 + 1) + "/" + String(BYTE046)
PrintLn ReadLine(STRING018, 4)
Newline
Endif
STRING032 = "?!*"
BYTE041 = 0
FSeek 1, (BYTE044 * 17) * 60 + 1, 0
For WORD001 = 1 To INTEGER001
If (BOOLEAN013 == 0) Then
PROC011(1, STRING033, 35, "")
PROC011(1, STRING034, 8, "")
FRead 1, BYTE042, 1
FRead 1, BYTE048, 1
FSeek 1, 13, 1
BYTE047 = 0
If (Len(STRING034) <> 0) BYTE047 = FileInf(STRING007 + STRING034 + ".CAT", 4) / 257
Endif
If (Ferr(1) || BOOLEAN013) Then
BOOLEAN013 = 1
If ((GrafMode() <> "A") && (GrafMode() <> "N")) Then
AnsiPos BYTE037 + 1, BYTE039 + 2 + WORD001
Print Space(49)
Endif
Continue
Endif
Inc BYTE041
If ((GrafMode() <> "A") && (GrafMode() <> "N")) AnsiPos BYTE037 + 1, BYTE039 + 2 + WORD001
Color BYTE019
Print Space(2)
Color BYTE023
Print Chr(40)
Color BYTE024
Print Chr(64 + WORD001)
Color BYTE023
Print Chr(41)
Color BYTE019
Print Chr(32)
STRING032 = STRING032 + Chr(64 + WORD001)
If ((CurSec() < BYTE042) || (BYTE033 < BYTE048)) Then
Color BYTE022
Else
Color BYTE021
Endif
Print Left(STRING033, 37)
Print Left(BYTE047, 4)
Color BYTE019
Print Space(2)
If ((GrafMode() == "A") || (GrafMode() == "N")) Newline
Next
FRead 1, STRING033, 60
BOOLEAN013 = Ferr(1)
If ((GrafMode() == "A") || (GrafMode() == "N")) Newline
If (((BOOLEAN013 && (BYTE044 <> 0)) && (GrafMode() <> "A")) && (GrafMode() <> "N")) Then
Color BYTE018
STRING033 = ReadLine(STRING018, 5)
AnsiPos BYTE038 - 2 + Len(StripAtx(STRING033)), BYTE040 - 2
Print Replace(Space(Len(StripAtx(STRING033))), Chr(32), Chr(BYTE009))
Endif
If ((BOOLEAN013 == 0) && FUNCTION001(STRING004, STRING005, STRING006)) Then
If ((GrafMode() <> "A") && (GrafMode() <> "N")) Then
STRING033 = ReadLine(STRING018, 5)
AnsiPos BYTE038 - 2 + Len(StripAtx(STRING033)), BYTE040 - 2
Print STRING033
Goto LABEL008
Endif
Print ReadLine(STRING018, 6) + Chr(32)
:LABEL008
STRING032 = STRING032 + Chr(16) + Chr(43)
Endif
If (BYTE044 <> 0) Then
If ((GrafMode() <> "A") && (GrafMode() <> "N")) Then
STRING033 = ReadLine(STRING018, 7)
AnsiPos BYTE038 - 2 + Len(StripAtx(STRING033)), BYTE039 + 2
Print STRING033
Goto LABEL009
Endif
Print ReadLine(STRING018, 8) + Chr(32)
:LABEL009
STRING032 = STRING032 + Chr(17) + Chr(45)
Endif
If ((((BYTE044 <> 0) || !BOOLEAN013) && FUNCTION001(STRING004, STRING005, STRING006)) && ((GrafMode() <> "A") && (GrafMode() <> "N"))) Then
STRING033 = ReplaceStr(ReplaceStr(ReadLine(STRING018, 20), "@PAGE@", BYTE044 + 1), "@TOTAL@", BYTE046)
AnsiPos BYTE037 + 2, BYTE040 - 2
Color BYTE018
Print Chr(BYTE009)
Print STRING033
Color BYTE018
Print Chr(BYTE009)
Endif
If ((GrafMode() == "A") || (GrafMode() == "N")) PrintLn ReadLine(STRING018, 9)
If ((GrafMode() <> "A") && (GrafMode() <> "N")) Then
FClose 1
BYTE043 = FUNCTION002(BYTE037 + 2, BYTE039 + 3, 47, BYTE041 - 1, STRING032)
FOpen 1, STRING007 + "DMS" + String(WORD006) + ".CNF", 2, 0
Else
FClose 1
InputStr ReadLine(STRING018, 10), STRING033, 7, 1, Replace(Replace(STRING032, Chr(16), "/"), Chr(17), "\") + "X", 64 + 8
FOpen 1, STRING007 + "DMS" + String(WORD006) + ".CNF", 2, 0
BYTE026 = Asc(STRING033)
Select Case (Chr(BYTE026))
Case "+"
BYTE043 = 3
Case "-"
BYTE043 = 2
Case "X"
BYTE043 = 4
Case "\"
BYTE043 = 5
Case "/"
BYTE043 = 6
Case "?"
BYTE043 = 7
Case "*"
BYTE043 = 8
Case "!"
BYTE043 = 9
Case Chr(0)
If (InStr(STRING032, Chr(16)) <> 0) Then
BYTE026 = Asc(43)
BYTE043 = 3
Else
BYTE026 = Asc(88)
BYTE043 = 4
Endif
Case Else
BYTE043 = 1
Endif
End Select
If ((BYTE026 == 43) && (BYTE043 == 1)) Then
BYTE043 = 3
ElseIf ((BYTE026 == 45) && (BYTE043 == 1)) Then
BYTE043 = 2
ElseIf ((BYTE026 == 63) && (BYTE043 == 1)) Then
BYTE043 = 7
ElseIf ((BYTE026 == 42) && (BYTE043 == 1)) Then
BYTE043 = 8
ElseIf ((BYTE026 == 33) && (BYTE043 == 1)) Then
BYTE043 = 9
Endif
If (BYTE043 == 0) Then
BYTE045 = INTEGER002 + 1
Break
Continue
Endif
If (BYTE043 == 1) Then
BYTE045 = BYTE026 - 65 + 1
Break
Continue
Endif
If (BYTE043 == 2) Then
Dec BYTE044
BOOLEAN013 = 0
INTEGER002 = 16
If (((BYTE044 == 0) && (GrafMode() <> "A")) && (GrafMode() <> "N")) Then
Color BYTE018
STRING033 = ReadLine(STRING018, 7)
AnsiPos BYTE038 - 2 + Len(StripAtx(STRING033)), BYTE039 + 2
Print Replace(Space(Len(StripAtx(STRING033))), Chr(32), Chr(BYTE009))
Endif
Color 7
Continue
Endif
If (BYTE043 == 3) Then
Inc BYTE044
BOOLEAN013 = 0
INTEGER002 = 0
Color 7
Continue
Endif
If (BYTE043 == 4) Then
BYTE045 = 0
Break
Continue
Endif
If (BYTE043 == 5) Then
BYTE044 = 0
BOOLEAN013 = 0
INTEGER002 = 0
If ((GrafMode() <> "A") && (GrafMode() <> "N")) Then
Color BYTE018
STRING033 = ReadLine(STRING018, 7)
AnsiPos BYTE038 - 2 + Len(StripAtx(STRING033)), BYTE039 + 2
Print Replace(Space(Len(StripAtx(STRING033))), Chr(32), Chr(BYTE009))
Endif
Color 7
Continue
Endif
If (BYTE043 == 6) Then
BYTE044 = BYTE046 - 1
BOOLEAN013 = 0
INTEGER002 = 0
Color 7
Continue
Endif
If (((BYTE043 == 7) || (BYTE043 == 8)) || (BYTE043 == 9)) Then
FClose 1
If (BYTE043 == 7) Then
STRING033 = STRING012
Goto LABEL010
Endif
If (BYTE043 == 8) Then
STRING033 = STRING026
Goto LABEL010
Endif
If (BYTE043 == 9) Then
STRING033 = STRING027
Endif
:LABEL010
If (BOOLEAN001) Log "Viewed (" + STRING033 + ") File", 0
Color 7
Cls
StartDisp 2
Print "@QON@"
DispFile STRING009 + STRING033, 1 + 4 + 2
Newline
Wait
StartDisp 1
Print "@QOFF@"
Color 7
Cls
Goto LABEL006
Endif
EndWhile
FClose 1
If (BYTE045 == 0) PROC001(0)
BYTE045 = BYTE045 + BYTE044 * 17
BYTE036 = BYTE045 - 1
BYTE027 = INTEGER002
BYTE028 = BYTE044
Color 7
EndProc
;------------------------------------------------------------------------------
Function FUNCTION002(Byte BYTE049, Byte BYTE050, Byte BYTE051, Byte BYTE052, String STRING035) Byte
String STRING036
String STRING037
Byte BYTE054
Byte BYTE055
Byte BYTE056
STRING036 = ScrText(BYTE049, BYTE050 + INTEGER002, BYTE051, 1)
AnsiPos BYTE049, BYTE050 + INTEGER002
Color BYTE020
Print StripAtx(STRING036)
While (0 == 0) Do
STRING037 = ""
WORD001 = 0
While ((WORD001 < 100) && (Len(STRING037) == 0)) Do
Inc WORD001
STRING037 = Upper(Inkey())
EndWhile
If (BOOLEAN010) Then
FOpen 3, STRING013, 2, 0
If (FUNCTION006(3)) Then
PROC016(3, STRING020)
BYTE054 = GetX()
BYTE055 = GetY()
AnsiPos 1, BYTE050 + BYTE052 + 5
Color 15
ClrEol
Print Space(40 - Len(STRING020) / 2) + STRING020
AnsiPos BYTE054, BYTE055
Endif
If (FUNCTION005(3)) Then
PROC015(3, STRING020)
BYTE054 = GetX()
BYTE055 = GetY()
AnsiPos 1, BYTE050 + BYTE052 + 5
Color 15
ClrEol
Print Space(40 - Len(STRING020) / 2) + STRING020
AnsiPos BYTE054, BYTE055
Endif
FClose 3
Endif
If ((STRING037 == "DOWN") || (STRING037 == "2")) Then
If (INTEGER002 < BYTE052) Then
AnsiPos BYTE049, BYTE050 + INTEGER002
Print STRING036
Inc INTEGER002
STRING036 = ScrText(BYTE049, BYTE050 + INTEGER002, BYTE051, 1)
AnsiPos BYTE049, BYTE050 + INTEGER002
Color BYTE020
Print StripAtx(STRING036)
Goto LABEL011
Endif
If ((INTEGER002 >= BYTE052) && (InStr(STRING035, Chr(16)) <> 0)) Then
FUNCTION002 = 3
Break
Endif
:LABEL011
Continue
Endif
If ((STRING037 == "UP") || (STRING037 == "8")) Then
If (INTEGER002 > 0) Then
AnsiPos BYTE049, BYTE050 + INTEGER002
Print STRING036
Dec INTEGER002
STRING036 = ScrText(BYTE049, BYTE050 + INTEGER002, BYTE051, 1)
AnsiPos BYTE049, BYTE050 + INTEGER002
Color BYTE020
Print StripAtx(STRING036)
Goto LABEL012
Endif
If ((INTEGER002 <= 0) && (InStr(STRING035, Chr(17)) <> 0)) Then
FUNCTION002 = 2
Break
Endif
:LABEL012
Continue
Endif
If (((((STRING037 == "LEFT") || (STRING037 == "PGUP")) || (STRING037 == "-")) || (STRING037 == "4")) && (InStr(STRING035, Chr(17)) <> 0)) Then
FUNCTION002 = 2
Break
Continue
Endif
If (((((STRING037 == "RIGHT") || (STRING037 == "PGDN")) || (STRING037 == "+")) || (STRING037 == "6")) && (InStr(STRING035, Chr(16)) <> 0)) Then
FUNCTION002 = 3
Break
Continue
Endif
If (((STRING037 == "HOME") || (STRING037 == "\")) && (InStr(STRING035, Chr(17)) <> 0)) Then
FUNCTION002 = 5
Break
Continue
Endif
If (((STRING037 == "END") || (STRING037 == "/")) && (InStr(STRING035, Chr(16)) <> 0)) Then
FUNCTION002 = 6
Break
Continue
Endif
If (InStr(STRING035, STRING037) <> 0) Then
BYTE026 = Asc(STRING037)
FUNCTION002 = 1
Break
Continue
Endif
If (STRING037 == Chr(13)) Then
FUNCTION002 = 0
Break
Continue
Endif
If (STRING037 == Chr(27)) Then
FUNCTION002 = 4
Break
Continue
Endif
If (STRING037 == Chr(8)) Then
FUNCTION002 = 7
Break
Continue
Endif
If (STRING037 == Chr(22)) Then
FUNCTION002 = 8
Break
Continue
Endif
If (STRING037 == Chr(14)) Then
FUNCTION002 = 9
Break
Endif
EndWhile
EndFunc
;------------------------------------------------------------------------------
Procedure PROC008(Byte BYTE056, Byte BYTE057, Byte BYTE058, Byte BYTE059)
Byte BYTE060
If ((GrafMode() == "A") || (GrafMode() == "N")) Goto LABEL013
Color 7
For BYTE060 = BYTE057 To BYTE059
If (Len(RTrim(ScrText(BYTE056, BYTE060, BYTE058 - BYTE056, 0), Chr(32))) <> 0) Then
AnsiPos BYTE056, BYTE060
Print Space(BYTE058 - BYTE056 + 1)
Endif
Next
Color BYTE019
AnsiPos BYTE056 + 1, BYTE057 + 1
Print Space(BYTE058 - BYTE056)
AnsiPos BYTE056 + 1, BYTE059 - 1
Print Space(BYTE058 - BYTE056)
AnsiPos BYTE056, BYTE057
Color BYTE012
Print Chr(BYTE003)
AnsiPos BYTE058, BYTE057
Color BYTE010
Print Chr(BYTE001)
AnsiPos BYTE056, BYTE059
Color BYTE017
Print Chr(BYTE008)
AnsiPos BYTE058, BYTE059
Color BYTE015
Print Chr(BYTE006)
Color BYTE011
AnsiPos BYTE056 + 1, BYTE057
Print Replace(Space(BYTE058 - BYTE056 - 1), Chr(32), Chr(BYTE002))
Color BYTE016
AnsiPos BYTE056 + 1, BYTE059
Print Replace(Space(BYTE058 - BYTE056 - 1), Chr(32), Chr(BYTE007))
Color BYTE013
For BYTE060 = BYTE057 + 1 To BYTE059 - 1
AnsiPos BYTE056, BYTE060
Print Chr(BYTE004)
Next
Color BYTE014
For BYTE060 = BYTE057 + 1 To BYTE059 - 1
AnsiPos BYTE058, BYTE060
Print Chr(BYTE005)
Next
Color BYTE018
AnsiPos BYTE056 + 1, BYTE057 + 2
Print Replace(Space(BYTE058 - BYTE056 - 1), Chr(32), Chr(BYTE009))
AnsiPos BYTE056 + 1, BYTE059 - 2
Print Replace(Space(BYTE058 - BYTE056 - 1), Chr(32), Chr(BYTE009))
:LABEL013
EndProc
;------------------------------------------------------------------------------
Procedure PROC007(String STRING038, String STRING039)
Byte BYTE061
Byte BYTE062
Byte BYTE063
Byte BYTE064
Byte BYTE065
Byte BYTE066
Byte BYTE067
Word WORD007
Word WORD008
Word WORD009
Word WORD010
Integer INTEGER008
Integer INTEGER009
String STRING040
String STRING041
String STRING042
String STRING043
Boolean BOOLEAN014
Boolean BOOLEAN015
BOOLEAN015 = 0
:LABEL014
WORD007 = FileInf(STRING007 + STRING039 + ".CAT", 4) / 260
INTEGER009 = WORD007 / 17
If (WORD007 % 17 <> 0) Inc INTEGER009
If (WORD007 > 17) WORD007 = 17
If (WORD007 == 0) Then
PROC009(ReplaceStr(ReadLine(STRING018, 13), "@AREA@", STRING038))
Else
If (BOOLEAN009) Then
BYTE061 = 6
BYTE062 = 74
Else
BYTE061 = 10
BYTE062 = 70
Endif
BYTE063 = 12 - 3 + WORD007 / 2
BYTE064 = 12 + 3 + WORD007 / 2
If (WORD007 % 2 == 0) Dec BYTE064
If (!BOOLEAN015) INTEGER008 = 0
BOOLEAN014 = 0
PROC008(BYTE061, BYTE063, BYTE062, BYTE064)
If ((GrafMode() <> "A") && (GrafMode() <> "N")) Then
STRING020 = ReplaceStr(ReadLine(STRING018, 14), "@AREA@", STRING038)
AnsiPos 40 - Len(StripAtx(STRING020)) / 2, BYTE063 + 1
Print STRING020
STRING020 = ReadLine(STRING018, 3)
AnsiPos 40 - Len(StripAtx(STRING020)) / 2, BYTE064 - 1
Print STRING020
Else
Newline
Endif
If (!BOOLEAN015) INTEGER002 = 0
FOpen 1, STRING007 + STRING039 + ".CAT", 2, 0
While (0 == 0) Do
STRING040 = "?!*"
WORD010 = 0
If ((GrafMode() == "A") || (GrafMode() == "N")) Then
Newline
OpText String(INTEGER008 + 1) + "/" + String(INTEGER009)
PrintLn ReplaceStr(ReadLine(STRING018, 15), "@AREA@", STRING038)
Newline
Endif
FSeek 1, (INTEGER008 * 17) * 260 + 1, 0
For WORD009 = 1 To WORD007
If (BOOLEAN014 == 0) Then
PROC011(1, STRING020, 50, "Untitled")
PROC011(1, STRING043, 8, " NONE ")
FRead 1, BYTE066, 1
FRead 1, BYTE067, 1
If (Psa(7) && (PCBAccStat(0) == "2")) Then
FSeek 1, 88, 1
PROC011(1, STRING042, 7, "0")
PROC011(1, STRING041, 7, "0")
FSeek 1, 94, 1
Goto LABEL015
Endif
FSeek 1, 198, 1
Endif
:LABEL015
If (Ferr(1) || BOOLEAN014) Then
BOOLEAN014 = 1
If ((GrafMode() <> "A") && (GrafMode() <> "N")) Then
AnsiPos BYTE061 + 1, BYTE063 + 2 + WORD009
If (BOOLEAN009) Then
Print Space(67)
Goto LABEL016
Endif
Print Space(59)
Endif
:LABEL016
Continue
Endif
Inc WORD010
If ((GrafMode() <> "A") && (GrafMode() <> "N")) AnsiPos BYTE061 + 1, BYTE063 + 2 + WORD009
Color BYTE019
Print Space(2)
Color BYTE023
Print Chr(40)
Color BYTE024
Print Chr(64 + WORD009)
Color BYTE023
Print Chr(41)
Color BYTE019
Print Chr(32)
STRING040 = STRING040 + Chr(64 + WORD009)
If ((((STRING043 == " NONE ") || (BYTE033 < BYTE067)) || (CurSec() < BYTE066)) || ((Psa(7) && (PCBAccStat(0) == "2")) && ((PCBAccStat(4) < STRING041) || (PCBAccStat(4) < STRING042)))) Then
Color BYTE022
Else
Color BYTE021
Endif
Print Left(STRING020, 51)
If (BOOLEAN009) Print Left(STRING043, 9)
Color BYTE019
If (BOOLEAN009) Then
Print Chr(32)
Else
Print Space(2)
Endif
If ((GrafMode() == "A") || (GrafMode() == "N")) Newline
Next
FRead 1, STRING020, 260
BOOLEAN014 = Ferr(1)
If ((GrafMode() == "A") || (GrafMode() == "N")) Newline
If (((BOOLEAN014 && (INTEGER008 <> 0)) && (GrafMode() <> "A")) && (GrafMode() <> "N")) Then
Color BYTE018
STRING020 = ReadLine(STRING018, 5)
AnsiPos BYTE062 - 2 + Len(StripAtx(STRING020)), BYTE064 - 2
Print Replace(Space(Len(StripAtx(STRING020))), Chr(32), Chr(BYTE009))
Endif
If ((BOOLEAN014 == 0) && FUNCTION001(STRING004, STRING005, STRING006)) Then
If ((GrafMode() <> "A") && (GrafMode() <> "N")) Then
STRING020 = ReadLine(STRING018, 5)
AnsiPos BYTE062 - 2 + Len(StripAtx(STRING020)), BYTE064 - 2
Print STRING020
Goto LABEL017
Endif
Print ReadLine(STRING018, 6) + Chr(32)
:LABEL017
STRING040 = STRING040 + Chr(16) + Chr(43)
Endif
If (INTEGER008 <> 0) Then
If ((GrafMode() <> "A") && (GrafMode() <> "N")) Then
STRING020 = ReadLine(STRING018, 7)
AnsiPos BYTE062 - 2 + Len(StripAtx(STRING020)), BYTE063 + 2
Print STRING020
Goto LABEL018
Endif
Print ReadLine(STRING018, 8) + Chr(32)
:LABEL018
STRING040 = STRING040 + Chr(17) + Chr(45)
Endif
If ((((INTEGER008 <> 0) || !BOOLEAN014) && FUNCTION001(STRING004, STRING005, STRING006)) && ((GrafMode() <> "A") && (GrafMode() <> "N"))) Then
STRING020 = ReplaceStr(ReplaceStr(ReadLine(STRING018, 20), "@PAGE@", INTEGER008 + 1), "@TOTAL@", INTEGER009)
AnsiPos BYTE061 + 2, BYTE064 - 2
Color BYTE018
Print Chr(BYTE009)
Print STRING020
Color BYTE018
Print Chr(BYTE009)
Endif
If ((GrafMode() == "A") || (GrafMode() == "N")) PrintLn ReadLine(STRING018, 9)
If ((GrafMode() <> "A") && (GrafMode() <> "N")) Then
FClose 1
BYTE065 = FUNCTION002(BYTE061 + 2, BYTE063 + 3, BYTE062 - BYTE061 + 3, WORD010 - 1, STRING040)
FOpen 1, STRING007 + STRING039 + ".CAT", 2, 0
Else
FClose 1
InputStr ReadLine(STRING018, 10), STRING020, 7, 1, Replace(Replace(STRING040, Chr(16), "/"), Chr(17), "\") + "X", 64 + 8
FOpen 1, STRING007 + STRING039 + ".CAT", 2, 0
BYTE026 = Asc(STRING020)
Select Case (Chr(BYTE026))
Case "+"
BYTE065 = 3
Case "-"
BYTE065 = 2
Case "X"
BYTE065 = 4
Case "\"
BYTE065 = 5
Case "/"
BYTE065 = 6
Case "?"
BYTE065 = 7
Case "*"
BYTE065 = 8
Case "!"
BYTE065 = 9
Case Chr(0)
If (InStr(STRING040, Chr(16)) <> 0) Then
BYTE026 = Asc(43)
BYTE065 = 3
Else
BYTE026 = Asc(88)
BYTE065 = 4
Endif
Case Else
BYTE065 = 1
Endif
End Select
If ((BYTE026 == 43) && (BYTE065 == 1)) Then
BYTE065 = 3
ElseIf ((BYTE026 == 45) && (BYTE065 == 1)) Then
BYTE065 = 2
ElseIf ((BYTE026 == 63) && (BYTE065 == 1)) Then
BYTE065 = 7
ElseIf ((BYTE026 == 42) && (BYTE065 == 1)) Then
BYTE065 = 8
ElseIf ((BYTE026 == 33) && (BYTE065 == 1)) Then
BYTE065 = 9
Endif
If (BYTE065 == 0) Then
WORD008 = INTEGER002 + 1
Break
Continue
Endif
If (BYTE065 == 1) Then
WORD008 = BYTE026 - 65 + 1
Break
Continue
Endif
If (BYTE065 == 2) Then
Dec INTEGER008
BOOLEAN014 = 0
INTEGER002 = 16
If (((INTEGER008 == 0) && (GrafMode() <> "A")) && (GrafMode() <> "N")) Then
Color BYTE018
STRING020 = ReadLine(STRING018, 7)
AnsiPos BYTE062 - 2 + Len(StripAtx(STRING020)), BYTE063 + 2
Print Replace(Space(Len(StripAtx(STRING020))), Chr(32), Chr(BYTE009))
Endif
Color 7
Continue
Endif
If (BYTE065 == 3) Then
Inc INTEGER008
BOOLEAN014 = 0
INTEGER002 = 0
Color 7
Continue
Endif
If (BYTE065 == 4) Then
WORD008 = 0
Break
Continue
Endif
If (BYTE065 == 5) Then
INTEGER008 = 0
BOOLEAN014 = 0
INTEGER002 = 0
If ((GrafMode() <> "A") && (GrafMode() <> "N")) Then
Color BYTE018
STRING020 = ReadLine(STRING018, 7)
AnsiPos BYTE062 - 2 + Len(StripAtx(STRING020)), BYTE063 + 2
Print Replace(Space(Len(StripAtx(STRING020))), Chr(32), Chr(BYTE009))
Endif
Color 7
Continue
Endif
If (BYTE065 == 6) Then
INTEGER008 = INTEGER009 - 1
BOOLEAN014 = 0
INTEGER002 = 0
Color 7
Continue
Endif
If (((BYTE065 == 7) || (BYTE065 == 8)) || (BYTE065 == 9)) Then
FClose 1
If (BYTE065 == 7) Then
STRING020 = STRING012
Goto LABEL019
Endif
If (BYTE065 == 8) Then
STRING020 = STRING026
Goto LABEL019
Endif
If (BYTE065 == 9) Then
STRING020 = STRING027
Endif
:LABEL019
If (BOOLEAN001) Log "Viewed (" + STRING020 + ") File", 0
Color 7
Cls
StartDisp 2
Print "@QON@"
DispFile STRING009 + STRING020, 1 + 4 + 2
Newline
Wait
StartDisp 1
Print "@QOFF@"
Color 7
Cls
BOOLEAN015 = 1
Goto LABEL014
Endif
EndWhile
FClose 1
If (WORD008 <> 0) Then
PROC013(WORD008 + INTEGER008 * 17 - 1, STRING039)
BOOLEAN015 = 1
Goto LABEL014
Endif
Endif
EndProc
;------------------------------------------------------------------------------
Procedure PROC005(String STRING044, Byte BYTE068)
String STRING045
String STRING046
String STRING047
String STRING048
String STRING049
String STRING050
String STRING051
String STRING052
Byte BYTE069
Byte BYTE070
Byte BYTE071
Byte BYTE072
Byte BYTE073
Byte BYTE074
Byte BYTE075
Byte BYTE076
Byte BYTE077
Byte BYTE078
Word WORD011
If (Exist(PPEPath() + "DMS" + String(PcbNode()) + ".OS2")) Delete PPEPath() + "DMS" + String(PcbNode()) + ".OS2"
Color 7
If ((GrafMode() <> "R") && (GrafMode() <> "G")) Then
Newline
Else
For WORD001 = GetY() To 23
If (Len(RTrim(ScrText(1, WORD001, 80, 0), Chr(32))) == 0) Break
Next
AnsiPos 1, WORD001 + 1
Endif
FOpen 1, STRING007 + STRING044 + ".CAT", 2, 0
FSeek 1, 1 + BYTE068 * 260, 0
PROC011(1, STRING045, 50, "Untitled")
PROC011(1, STRING046, 8, "")
FRead 1, BYTE075, 1
FRead 1, BYTE077, 1
FRead 1, STRING020, 2
BYTE069 = Asc(Right(STRING020, 1))
FRead 1, STRING020, 2
BYTE070 = Asc(Right(STRING020, 1))
PROC011(1, STRING047, 32, "")
PROC011(1, STRING048, 44, "")
FRead 1, STRING020, 2
BYTE071 = Asc(Right(STRING020, 1))
FRead 1, STRING020, 2
BYTE072 = Asc(Right(STRING020, 1))
FRead 1, STRING020, 2
BYTE073 = Asc(Right(STRING020, 1))
PROC011(1, STRING049, 7, "0")
PROC011(1, STRING050, 7, "0")
FRead 1, STRING020, 2
BYTE074 = Asc(Right(STRING020, 1))
PROC011(1, STRING051, 76, "")
PROC011(1, STRING052, 12, "")
FRead 1, STRING020, 2
BYTE078 = Asc(Right(STRING020, 1))
FClose 1
If (Len(STRING052) <> 0) Then
STRING020 = ""
InputStr ReadLine(STRING018, 29), STRING020, 7, 12, Mask_Ascii(), 64 + 4 + 2 + 8 + 1
Newline
If (STRING020 <> STRING052) Then
If (BOOLEAN001) Log "Password Attempt (" + STRING046 + "): " + STRING020, 0
Else
If ((Left(STRING048, 1) <> Chr(33)) && !Exist(STRING048)) STRING048 = STRING009 + STRING048
If (Exist(LTrim(STRING048, Chr(33)))) Then
If (Left(STRING048, 1) == Chr(33)) Then
DispStr STRING048
Goto LABEL020
Endif
Color 7
Print "@QON@"
DispFile STRING048, 1 + 4 + 2
Newline
Print "@QOFF@"
Endif
:LABEL020
If (BYTE072 == 89) Then
Eval FUNCTION003(1, STRING046)
PrintLn ReplaceStr(ReplaceStr(ReplaceStr(ReplaceStr(ReadLine(STRING018, 21), "@OPENED@", INTEGER006), "@LUSER@", STRING011), "00-00-00", DATE002), "00:00:00", TIME001)
Newline
Endif
Color 7
WORD011 = MinLeft()
If (BOOLEAN002) Then
RdUNet PcbNode()
If (BOOLEAN011) Then
STRING020 = U_Name() + " - " + STRING046
Goto LABEL021
Endif
STRING020 = U_Name() + " [" + RTrim(Left(STRING045, 48 - 3 + Len(U_Name())), Chr(32)) + "]"
:LABEL021
WrUNet PcbNode(), "D", UN_Name(), "Door Menu System", STRING020, ""
Endif
Select Case (BYTE069)
Case 68
If (Exist(STRING023 + STRING046)) Goto LABEL022
PROC009("(Error) Non-Existent """ + STRING045 + """ (" + STRING046 + ") Batch")
Goto LABEL031
Goto LABEL027
:LABEL022
If ((Psa(7) && ((PCBAccStat(0) == "1") || (PCBAccStat(0) == "2"))) && (STRING049 <> "0")) RecordUsage 12, "Debit for Door/Game", STRING046, STRING049, 1
If (BYTE071 == 89) Then
Backup 36
Print Chr(32) + Left(ReadLine(STRING018, 22), 35)
PROC012(1, STRING046)
Endif
Backup 36
Print Chr(32) + Left(ReadLine(STRING018, 23), 35)
FOpen 2, PPEPath() + "DMS" + String(PcbNode()) + ".TXT", 1, 3
FPutLn 2, "CLS"
FPutLn 2, "ECHO."
FPutLn 2, "ECHO Door/Game : " + STRING045 + " (" + STRING046 + ")"
FPutLn 2, "ECHO User : " + Mixed(U_Name())
STRING020 = "ECHO Environment : "
If (BYTE074 == 68) Then
STRING020 = STRING020 + "DOS (DMS" + String(PcbNode()) + ".BAT)"
Else
STRING020 = STRING020 + "OS/2 (DMS" + String(PcbNode()) + ".CMD)"
Endif
FPutLn 2, STRING020
STRING020 = "ECHO Created : " + STRING047
Select Case (BYTE070)
Case 68
STRING020 = STRING020 + "DOOR.SYS"
Case 85
STRING020 = STRING020 + "USER.SYS"
Case 80
STRING020 = STRING020 + "PCBOARD.SYS"
Case 66
STRING020 = STRING020 + "USER/DOOR"
End Select
FPutLn 2, STRING020
FPutLn 2, "ECHO."
FClose 2
Select Case (BYTE074)
Case 68
FOpen 2, PPEPath() + "DMS" + String(PcbNode()) + ".BAT", 1, 3
FPutLn 2, "@ECHO OFF"
If (Len(STRING028) <> 0) FPutLn 2, "SET PCBDOOR=" + STRING028
If (BOOLEAN007) Then
If (Exist("STARTOS2.CMD")) Then
FOpen 1, "STARTOS2.CMD", 0, 0
:LABEL023
If (Ferr(1)) Goto LABEL024
FGet 1, STRING020
If (Upper(Left(LTrim(STRING020, Chr(32)), 4)) == "SET ") FPutLn 2, Upper(LTrim(STRING020, Chr(32)))
Goto LABEL023
:LABEL024
FClose 1
Endif
If (Exist("BOARD.CMD")) Then
FOpen 1, "BOARD.CMD", 0, 0
:LABEL025
If (Ferr(1)) Goto LABEL026
FGet 1, STRING020
If (Upper(Left(LTrim(STRING020, Chr(32)), 4)) == "SET ") FPutLn 2, Upper(LTrim(STRING020, Chr(32)))
Goto LABEL025
:LABEL026
FClose 1
Endif
Endif
FClose 2
Append PPEPath() + "DMS" + String(PcbNode()) + ".TXT", PPEPath() + "DMS" + String(PcbNode()) + ".BAT"
Append STRING023 + STRING046, PPEPath() + "DMS" + String(PcbNode()) + ".BAT"
If (Exist(STRING023 + STRING046 + ".OS2")) Then
Copy STRING023 + STRING046 + ".OS2", PPEPath() + "DMS" + String(PcbNode()) + ".OS2"
ElseIf (Exist(STRING023 + "PCBDOS.OS2")) Then
Copy STRING023 + "PCBDOS.OS2", PPEPath() + "DMS" + String(PcbNode()) + ".OS2"
Endif
Case 79
FOpen 2, PPEPath() + "DMS" + String(PcbNode()) + ".CMD", 1, 3
FPutLn 2, "@ECHO OFF"
If (Len(STRING028) <> 0) FPutLn 2, "SET PCBDOOR=" + STRING028
FClose 2
Append PPEPath() + "DMS" + String(PcbNode()) + ".TXT", PPEPath() + "DMS" + String(PcbNode()) + ".CMD"
Append STRING023 + STRING046, PPEPath() + "DMS" + String(PcbNode()) + ".CMD"
End Select
:LABEL027
Delete PPEPath() + "DMS" + String(PcbNode()) + ".TXT"
Backup 36
Print Chr(32) + Left(ReadLine(STRING018, 24), 35)
Select Case (BYTE070)
Case 68
PROC006(STRING047)
Case 85
WrUSysDoor STRING046
Case 80
Copy "PCBOARD.SYS", STRING047 + "PCBOARD.SYS"
Case 66
PROC006(STRING047)
WrUSysDoor STRING046
End Select
Backup 36
PrintLn Left(ReplaceStr(ReplaceStr(ReadLine(STRING018, 19), "@NAME@", STRING045), "@FILE@", STRING046), 78)
FClose -1
If (BOOLEAN001) Log "Opened Door (" + STRING046 + ") at " + String(Time()) , 0
Select Case (BYTE074)
Case 68
Shell 1, BYTE076, PPEPath() + "DMS" + String(PcbNode()) + ".BAT", ""
Delete PPEPath() + "DMS" + String(PcbNode()) + ".BAT"
Delete PPEPath() + "DMS" + String(PcbNode()) + ".OS2"
Case 79
Shell 1, BYTE076, PPEPath() + "DMS" + String(PcbNode()) + ".CMD", ""
Delete PPEPath() + "DMS" + String(PcbNode()) + ".CMD"
End Select
If (BOOLEAN001) Log "Back from DOS at " + String(Time()) , 0
PrintLn ReplaceStr(ReadLine(STRING018, 25), "@BBS@", STRING004)
If ((Psa(7) && ((PCBAccStat(0) == "1") || (PCBAccStat(0) == "2"))) && (STRING050 <> "0")) RecordUsage 12, "Debit for Door/Game", STRING046, STRING050, WORD011 - MinLeft()
If ((BYTE070 == 85) || (BYTE070 == 66)) RdUSys
If (BYTE070 <> 80) Then
FOpen 1, "PCBOARD.SYS", 0, 0
Else
FOpen 1, STRING047 + "PCBOARD.SYS", 0, 0
Endif
FSeek 1, 9, 0
FRead 1, STRING020, 118
FClose 1
If (STRING020 == Space(118)) Then
If (BYTE073 == 89) AdjTime WORD011 - MinLeft()
If ((Psa(7) && ((PCBAccStat(0) == "1") || (PCBAccStat(0) == "2"))) && (STRING050 <> "0")) RecordUsage 12, "Debit for Door/Game", STRING046, STRING050, WORD011 - MinLeft()
Hangup
Endif
If (BOOLEAN005) Then
If ((BYTE070 == 68) || (BYTE070 == 66)) Then
Delete STRING047 + "DOOR.SYS"
Goto LABEL028
Endif
If (BYTE070 == 80) Then
If (Len(STRING047) <> 0) Delete STRING047 + "PCBOARD.SYS"
Endif
Endif
:LABEL028
Case 80
STRING051 = LTrim(STRING051, "!")
Tokenize STRING051
GetToken STRING020
If (Exist(STRING020)) Goto LABEL029
PROC009("(Error) Non-Existent """ + STRING045 + """ (" + STRING046 + ") PPE")
Goto LABEL031
Goto LABEL030
:LABEL029
If ((Psa(7) && ((PCBAccStat(0) == "1") || (PCBAccStat(0) == "2"))) && (STRING049 <> "0")) RecordUsage 12, "Debit for Door/Game", STRING046, STRING049, 1
If (BYTE071 == 89) Then
Backup 36
Print Chr(32) + Left(ReadLine(STRING018, 22), 35)
PROC012(1, STRING046)
Endif
FClose -1
If (BOOLEAN001) Log "Opened PPE (" + STRING046 + ") at " + String(Time()) , 0
DispStr "!" + STRING051
PrintLn ReplaceStr(ReadLine(STRING018, 25), "@BBS@", STRING004)
If ((Psa(7) && ((PCBAccStat(0) == "1") || (PCBAccStat(0) == "2"))) && (STRING050 <> "0")) RecordUsage 12, "Debit for Door/Game", STRING046, STRING050, WORD011 - MinLeft()
End Select
:LABEL030
If (BYTE073 == 89) AdjTime WORD011 - MinLeft()
KeyFlush
If (Exist("PCBDOOR.TXT")) Then
DispFile "PCBDOOR.TXT", 1 + 4 + 2
Newline
Wait
Delete "PCBDOOR.TXT"
Endif
If (Exist("PCBSTUFF.KBD")) Then
KbdFile "PCBSTUFF.KBD"
Delete "PCBSTUFF.KBD"
PROC001(0)
Endif
If (BYTE078 == 78) PROC001(0)
Endif
Endif
:LABEL031
RdUNet PcbNode()
If (ChatStat()) Then
WrUNet PcbNode(), "A", UN_Name(), "Door Menu System", "", ""
Else
WrUNet PcbNode(), "U", UN_Name(), "Door Menu System", "", ""
Endif
Color 7
Cls
EndProc
;------------------------------------------------------------------------------
Procedure PROC006(String STRING053)
Word WORD012
String STRING054
FOpen 2, ReadLine(PCBDat(), 29), 0, 0
FRead 2, STRING054, 25
FClose 2
STRING054 = RTrim(STRING054, Chr(32))
If (Exist(STRING053 + "DOOR.SYS")) Delete STRING053 + "DOOR.SYS"
FOpen 1, STRING053 + "DOOR.SYS", 2, 0
If (OnLocal()) Then
FPutLn 1, "COM0:"
Else
STRING020 = RTrim(ReplaceStr(ReadLine(PCBDat(), 52), "PORT", "COM"), Chr(58))
FPutLn 1, STRING020 + Chr(58)
Endif
GetUser
FPutLn 1, Carrier()
FPutLn 1, "8"
FPutLn 1, PcbNode()
FPutLn 1, ReadLine(PCBDat(), 53)
FPutLn 1, "Y"
FPutLn 1, "N"
FPutLn 1, "N"
FPutLn 1, "N"
If (STRING054 == U_Name()) Then
If (ReadLine(PCBDat(), 4)) Then
STRING020 = STRING054
Else
STRING020 = ReadLine(PCBDat(), 2)
Endif
Else
STRING020 = U_Name()
Endif
FPutLn 1, STRING020
FPutLn 1, U_City
FPutLn 1, U_HVPhone
FPutLn 1, U_BDPhone
FPutLn 1, U_Pwd
FPutLn 1, U_Sec
FPutLn 1, U_Logons()
FPutLn 1, U_LDate()
FPutLn 1, MinLeft() * 60
FPutLn 1, MinLeft()
If ((GrafMode() == "G") || (GrafMode() == "R")) Then
FPutLn 1, "GR"
Else
FPutLn 1, "NG"
Endif
FPutLn 1, U_PageLen
If (U_Expert) Then
FPutLn 1, "Y"
Else
FPutLn 1, "N"
Endif
FPut 1, "0"
For WORD012 = 1 To HiConfNum()
If (ConfReg(WORD012)) FPut 1, Chr(44) + String(WORD012)
Next
FPutLn 1, ""
FPutLn 1, CurConf()
FPutLn 1, U_ExpDate
FPutLn 1, U_RecNum(U_Name())
FPutLn 1, U_Trans
FPutLn 1, U_Ful()
FPutLn 1, U_Fdl()
FPutLn 1, U_BdlDay()
FPutLn 1, "0"
FPutLn 1, "0"
FPutLn 1, RTrim(ReadLine(PCBDat(), 28), Chr(92))
FPutLn 1, StripStr(ReadLine(PCBDat(), 36), "\WELCOME")
If (ReadLine(PCBDat(), 4)) Then
Tokenize STRING054
Else
Tokenize ReadLine(PCBDat(), 2)
Endif
STRING020 = Mixed(GetToken())
FPutLn 1, STRING020
FPutLn 1, U_Alias
FPutLn 1, PCBMac("@EVENT@")
If (ErrCorrect()) Then
FPutLn 1, "Y"
Else
FPutLn 1, "N"
Endif
If (GrafMode() == "A") Then
FPutLn 1, "Y"
Else
FPutLn 1, "N"
Endif
FPutLn 1, "N"
FPutLn 1, ReadLine(PCBDat(), 110)
FPutLn 1, "0"
FPutLn 1, U_LDir()
FPutLn 1, Time()
FPutLn 1, U_LTime()
FPutLn 1, "0"
FPutLn 1, "0"
FPutLn 1, U_Bul()
FPutLn 1, U_Bdl()
FPutLn 1, U_Cmnt1
FPutLn 1, "0"
FPutLn 1, U_MsgWr()
FClose 1
EndProc
;------------------------------------------------------------------------------
Procedure PROC012(Integer INTEGER010, String STRING055)
Integer INTEGER011
BigStr BIGSTR001
If (Exist(STRING007 + "DMSTAT.DAT")) Goto LABEL032
FOpen INTEGER010, STRING007 + "DMSTAT.DAT", 2, 0
FWrite INTEGER010, Chr(1), 1
FWrite INTEGER010, Date(), 2
FClose INTEGER010
:LABEL032
GetUser
If (FUNCTION003(INTEGER010, STRING055)) Then
Inc INTEGER006
DATE002 = Date()
TIME001 = Time()
If ((BOOLEAN008 && Psa(1)) && (Len(RTrim(U_Alias, Chr(32))) <> 0)) Then
STRING011 = U_Alias
Else
STRING011 = U_Name()
Endif
FOpen INTEGER010, STRING007 + "DMSTAT.DAT", 2, 0
FSeek INTEGER010, INTEGER005 * 45 + 12, 0
FWrite INTEGER010, INTEGER006, 4
FWrite INTEGER010, DATE002, 2
FWrite INTEGER010, TIME001, 4
FWrite INTEGER010, Chr(Len(STRING011)) + Left(STRING011, 25), 26
FClose INTEGER010
Else
INTEGER011 = (FileInf(STRING007 + "DMSTAT.DAT", 4) - 3) / 45
FOpen INTEGER010, STRING007 + "DMSTAT.DAT", 2, 0
While (INTEGER011 <> INTEGER003) Do
FSeek INTEGER010, (INTEGER011 - 1) * 45 + 3, 0
FRead INTEGER010, BIGSTR001, 45
FWrite INTEGER010, BIGSTR001, 45
Dec INTEGER011
EndWhile
If ((BOOLEAN008 && Psa(1)) && (Len(RTrim(U_Alias, Chr(32))) <> 0)) Then
STRING011 = U_Alias
Else
STRING011 = U_Name()
Endif
FSeek INTEGER010, INTEGER011 * 45 + 3, 0
FWrite INTEGER010, Chr(Len(STRING055)) + Left(STRING055, 8), 9
FWrite INTEGER010, 1, 4
FWrite INTEGER010, Date(), 2
FWrite INTEGER010, Time(), 4
FWrite INTEGER010, Chr(Len(STRING011)) + Left(STRING011, 25), 26
FClose INTEGER010
Endif
EndProc
;------------------------------------------------------------------------------
Function FUNCTION003(Integer INTEGER012, String STRING056) Boolean
String STRING057
Byte BYTE079
If (Exist(STRING007 + "DMSTAT.DAT")) Then
INTEGER003 = 0
INTEGER004 = (FileInf(STRING007 + "DMSTAT.DAT", 4) - 3) / 45 - 1
FUNCTION003 = 0
FOpen INTEGER012, STRING007 + "DMSTAT.DAT", 2, 0
While ((INTEGER003 <= INTEGER004) && !FUNCTION003) Do
INTEGER005 = (INTEGER003 + INTEGER004) / 2
FSeek INTEGER012, INTEGER005 * 45 + 3, 0
PROC011(INTEGER012, STRING057, 8, "")
If (RTrim(STRING057, Chr(32)) == STRING056) Then
FUNCTION003 = 1
STRING010 = STRING057
FRead INTEGER012, INTEGER006, 4
FRead INTEGER012, DATE002, 2
FRead INTEGER012, TIME001, 4
PROC011(INTEGER012, STRING011, 25, "")
Continue
Endif
If (RTrim(STRING057, Chr(32)) < STRING056) Then
INTEGER003 = INTEGER005 + 1
Continue
Endif
INTEGER004 = INTEGER005 - 1
EndWhile
FClose INTEGER012
Endif
If (FUNCTION003) Goto LABEL033
INTEGER006 = 0
DATE002 = 0
TIME001 = 0
STRING011 = "NO ONE"
:LABEL033
EndFunc
;------------------------------------------------------------------------------
Procedure PROC014()
STRING013 = ReadLine(PCBDat(), 41)
FOpen 1, STRING013, 0, 0
FRead 1, WORD002, 2
FRead 1, WORD003, 2
FRead 1, WORD004, 2
FClose 1
WORD005 = WORD003 / 8
If (WORD005 % 8 <> 0) Inc WORD005
WORD005 = WORD005 * 2
EndProc
;------------------------------------------------------------------------------
Function FUNCTION005(Byte BYTE079) Boolean
Byte BYTE080
Byte BYTE081
FSeek BYTE079, WORD004 * (PcbNode() - 1) + WORD005 + 6, 0
FRead BYTE079, BYTE080, 1
FUNCTION005 = (BYTE080 == 77)
EndFunc
;------------------------------------------------------------------------------
Procedure PROC015(Byte BYTE081, Var String STRING058)
Byte BYTE082
FSeek BYTE081, WORD004 * (PcbNode() - 1) + WORD005 + 110, 0
FRead BYTE081, STRING058, 80
If (ChatStat()) Then
BYTE082 = 65
Else
BYTE082 = 85
Endif
RdUNet PcbNode()
WrUNet PcbNode(), Chr(BYTE082), UN_Name(), UN_City(), UN_Oper(), ""
EndProc
;------------------------------------------------------------------------------
Function FUNCTION006(Byte BYTE083) Boolean
Word WORD013
Byte BYTE084
FSeek BYTE083, WORD004 * (PcbNode() - 1) + WORD005 + 8, 0
FRead BYTE083, WORD013, 2
FUNCTION006 = (WORD013 <> 0)
EndFunc
;------------------------------------------------------------------------------
Procedure PROC016(Byte BYTE084, Var String STRING059)
Word WORD014
Byte BYTE085
FSeek BYTE084, WORD004 * (PcbNode() - 1) + WORD005 + 8, 0
FRead BYTE084, WORD014, 2
FSeek BYTE084, -2, 1
FWrite BYTE084, 0, 2
FSeek BYTE084, 180, 1
FRead BYTE084, BYTE085, 1
FSeek BYTE084, -1, 1
FWrite BYTE084, 0, 1
RdUNet WORD014
STRING059 = "Chat Request: " + UN_Name() + " (" + String(WORD014) + ") in Channel " + String(BYTE085)
EndProc
;------------------------------------------------------------------------------
Procedure PROC001(Boolean BOOLEAN019)
If (BOOLEAN002) Then
RdUNet PcbNode()
If (ChatStat()) Then
WrUNet PcbNode(), "A", UN_Name(), UN_City(), "", ""
Goto LABEL034
Endif
WrUNet PcbNode(), "U", UN_Name(), UN_City(), "", ""
Endif
:LABEL034
If (BOOLEAN019) Goto LABEL036
If (BOOLEAN001) Log "-- Door Menu System (Closed) at (" + String(Time()) + ") --", 1
If (BOOLEAN004) Then
Color 7
Cls
ElseIf ((GrafMode() <> "A") && (GrafMode() <> "N")) Then
Color 7
AnsiPos 1, 23
Endif
If (Exist(STRING009 + STRING025)) Goto LABEL035
FCreate 1, STRING009 + STRING025, 2, 0
FClose 1
:LABEL035
DispFile STRING009 + STRING025, 1 + 4 + 2
:LABEL036
Print "@QON@"
StartDisp 2
End
EndProc
;------------------------------------------------------------------------------
Procedure PROC002()
Cls
Color 31
ClrEol
STRING021 = "Door Menu System " + STRING002 + " <Enhanced PCBoard Door Area>"
PrintLn Space(40 - Len(STRING021) / 2) + STRING021
Color 23
ClrEol
STRING021 = "Copyright (C) 1996 ArcticSoft Development, (Mario Mueller)"
PrintLn Space(40 - Len(STRING021) / 2) + STRING021
Color 7
STRING021 = STRING003
PrintLn Space(40 - Len(STRING021) / 2) + STRING021
Newline
If (FUNCTION001(STRING004, STRING005, STRING006)) Then
STRING016 = STRING004
Else
STRING016 = "Unregistered Evaluation Copy"
Endif
PrintLn "@X07[Registration: @X0F" + STRING016 + "@X07]"
EndProc
;------------------------------------------------------------------------------
Function FUNCTION001(String STRING060, String STRING061, String STRING062) Boolean
String STRING063
String STRING064
String STRING065
String STRING066
String STRING067
String STRING068
String STRING069
STRING060 = Upper(STRING060)
STRING061 = Upper(STRING061)
FUNCTION001 = 0
STRING063 = MegaNum(Len(STRING060) + Asc(Left(Upper(STRING060), 1)))
STRING064 = MegaNum(Len(STRING060) - Len(Strip(Strip(Strip(Strip(Strip(Strip(Upper(STRING060), Chr(66)), Chr(70)), Chr(74)), Chr(80)), Chr(86)), Chr(90))) + (Left(Len(STRING060), 1) + 1) * 40)
STRING065 = MegaNum(Len(STRING060) - Len(Strip(STRING060, Chr(32))) + Asc(Right(Upper(STRING060), 1)) + 300)
STRING066 = I2S(Len(STRING061) + Asc(Left(Upper(STRING061), 1)), 18)
STRING067 = MegaNum(Len(STRING061) - Len(Strip(Strip(Strip(Strip(Strip(Strip(Upper(STRING061), Chr(65)), Chr(69)), Chr(73)), Chr(79)), Chr(85)), Chr(89))) + (Left(Len(STRING061), 1) + 1) * 40)
STRING068 = MegaNum(Len(STRING061) - Len(Strip(STRING061, Chr(32))) + Asc(Right(Upper(STRING061), 1)) + 300)
If (Replace(STRING064 + STRING063 + STRING065 + STRING067 + STRING068 + STRING066, "0", "O") == STRING062) FUNCTION001 = 1
EndFunc
;------------------------------------------------------------------------------
Procedure PROC009(String STRING069)
Byte BYTE086
BYTE086 = Len(StripAtx(STRING069))
If (BYTE086 < Len(StripAtx(ReadLine(STRING018, 11)))) BYTE086 = Len(StripAtx(ReadLine(STRING018, 11)))
If (BYTE086 < Len(StripAtx(ReadLine(STRING018, 12)))) BYTE086 = Len(StripAtx(ReadLine(STRING018, 12)))
If (BOOLEAN001) Log STRING069, 0
If (BYTE086 > 74) Then
STRING069 = Left(STRING069, 74)
BYTE086 = 74
Endif
If (BYTE086 % 2 <> 0) Then
STRING069 = STRING069 + Chr(32)
Inc BYTE086
Endif
PROC008(40 - 1 + BYTE086 / 2, 10, 40 + BYTE086 / 2, 16)
STRING020 = ReadLine(STRING018, 11)
AnsiPos 40 - Len(StripAtx(STRING020)) / 2, 11
Print STRING020
AnsiPos 40 - Len(StripAtx(STRING069)) / 2, 13
Color 28
Print STRING069
STRING020 = ReadLine(STRING018, 12)
AnsiPos 40 - Len(StripAtx(STRING020)) / 2, 15
Print STRING020
While (0 == 0) Do
If (Inkey() == Chr(13)) Break
EndWhile
EndProc
;------------------------------------------------------------------------------
Procedure PROC010(Byte BYTE087, Var String STRING070, Var Byte BYTE088, Var String STRING071, Var Byte BYTE089, Var String STRING072)
Word WORD015
If (!Exist(STRING007 + "DMS" + String(CurConf()) + ".CNF") && BOOLEAN006) Then
WORD015 = 0
Else
WORD015 = CurConf()
Endif
FOpen 1, STRING007 + "DMS" + String(WORD015) + ".CNF", 2, 0
FSeek 1, BYTE087 * 60 + 1, 0
PROC011(1, STRING070, 35, "Untitled")
PROC011(1, STRING071, 8, "")
FRead 1, BYTE088, 1
FRead 1, BYTE089, 1
PROC011(1, STRING072, 12, "")
FClose 1
EndProc
;------------------------------------------------------------------------------
Function FUNCTION004(Integer INTEGER013, String STRING073) Boolean
String STRING074
Word WORD016
If (Exist(STRING007 + "DMSKEY.IDX")) Then
INTEGER003 = 0
INTEGER004 = FileInf(STRING007 + "DMSKEY.IDX", 4) / 20 - 1
FUNCTION004 = 0
FOpen INTEGER013, STRING007 + "DMSKEY.IDX", 2, 0
While ((INTEGER003 <= INTEGER004) && !FUNCTION004) Do
INTEGER005 = (INTEGER003 + INTEGER004) / 2
FSeek INTEGER013, INTEGER005 * 20, 0
PROC011(INTEGER013, STRING074, 8, "")
PROC011(INTEGER013, STRING020, 8, "")
FRead INTEGER013, WORD001, 2
If (RTrim(STRING074, Chr(32)) == STRING073) Then
FUNCTION004 = 1
Continue
Endif
If (RTrim(STRING074, Chr(32)) < STRING073) Then
INTEGER003 = INTEGER005 + 1
Continue
Endif
INTEGER004 = INTEGER005 - 1
EndWhile
FClose INTEGER013
STRING021 = STRING074
Endif
EndFunc
;------------------------------------------------------------------------------
Procedure PROC013(Word WORD016, String STRING075)
Byte BYTE090
Byte BYTE091
String STRING076
String STRING077
String STRING078
FOpen 1, STRING007 + STRING075 + ".CAT", 2, 0
FSeek 1, WORD016 * 260 + 1, 0
PROC011(1, STRING020, 50, "Untitled")
PROC011(1, STRING078, 8, " NONE ")
FRead 1, BYTE090, 1
FRead 1, BYTE091, 1
If (Psa(7)) Then
FSeek 1, 88, 1
PROC011(1, STRING077, 7, "0")
PROC011(1, STRING076, 7, "0")
Endif
FClose 1
If (((STRING078 == " NONE ") || (CurSec() < BYTE090)) || (BYTE033 < BYTE091)) Then
PROC009(ReplaceStr(ReadLine(STRING018, 17), "@AREA@", RTrim(STRING020, Chr(32))))
Color 7
Cls
Goto LABEL037
ElseIf ((Psa(7) && (PCBAccStat(0) == "2")) && ((PCBAccStat(4) < STRING076) || (PCBAccStat(4) < STRING077))) Then
PROC009(ReplaceStr(ReplaceStr(ReadLine(STRING018, 18), "@RCRED@", STRING077 + "/" + STRING076), "@UCRED@", PCBAccStat(4)))
Color 7
Cls
Endif
PROC005(STRING075, WORD016)
:LABEL037
EndProc
;------------------------------------------------------------------------------
;
; Usage report (before postprocessing)
;
; ■ Statements used :
;
; 2 End
; 15 Cls
; 4 ClrEol
; 5 Wait
; 74 Color
; 404 Goto
; 325 Let
; 82 Print
; 13 PrintLn
; 295 If
; 10 DispFile
; 3 FCreate
; 26 FOpen
; 32 FClose
; 2 FGet
; 2 FPut
; 70 FPutLn
; 8 StartDisp
; 1 Hangup
; 2 GetUser
; 10 Delete
; 2 AdjTime
; 17 Log
; 3 InputStr
; 2 Delay
; 12 Inc
; 6 Dec
; 24 Newline
; 3 Tokenize
; 2 GetToken
; 2 Shell
; 1 DispText
; 1 KbdFile
; 2 OpText
; 2 DispStr
; 6 RdUNet
; 8 WrUNet
; 47 AnsiPos
; 5 Backup
; 1 RdUSys
; 2 MPrintLn
; 26 FSeek
; 76 FRead
; 15 FWrite
; 4 Append
; 3 Copy
; 1 KeyFlush
; 2 WrUSysDoor
; 1 TpaGet
; 16 EndProc
; 6 EndFunc
; 1 Eval
; 5 RecordUsage
;
;
; ■ Functions used :
;
; 5 -
; 22 *
; 29 /
; 7 %
; 425 +
; 89 -
; 210 ==
; 90 <>
; 25 <
; 11 <=
; 11 >
; 19 >=
; 240 !
; 103 &&
; 57 ||
; 62 Len(
; 13 Upper()
; 23 Left()
; 22 Right()
; 26 Space()
; 6 Ferr()
; 143 Chr()
; 42 Asc()
; 9 InStr()
; 6 LTrim()
; 18 RTrim()
; 9 Date()
; 8 Time()
; 9 U_Name()
; 3 U_LDate()
; 2 U_LTime()
; 1 U_LDir()
; 1 U_Logons()
; 1 U_Ful()
; 1 U_Fdl()
; 1 U_BdlDay()
; 1 U_Bdl()
; 1 U_Bul()
; 2 Year()
; 4 Month()
; 2 Day()
; 31 StripAtx()
; 15 Replace()
; 14 Strip()
; 2 Inkey()
; 46 String()
; 1 Mask_Ascii()
; 7 CurConf()
; 11 PCBDat()
; 26 PPEPath()
; 1 U_MsgWr()
; 39 PcbNode()
; 57 ReadLine()
; 1 OnLocal()
; 9 UN_Name()
; 3 UN_City()
; 1 UN_Oper()
; 4 CurSec()
; 2 GetToken()
; 8 MinLeft()
; 27 Exist()
; 1 I2S()
; 1 Carrier()
; 2 LangExt()
; 2 GetX()
; 3 GetY()
; 70 GrafMode()
; 11 Psa()
; 11 FileInf()
; 2 PPEName()
; 6 TokCount()
; 1 U_RecNum()
; 5 ScrText()
; 20 ReplaceStr()
; 1 StripStr()
; 2 Mixed()
; 1 ConfReg()
; 1 ErrCorrect()
; 4 ChatStat()
; 5 MegaNum()
; 2 HiConfNum()
; 1 PCBMac()
; 18 PCBAccStat()
;
;------------------------------------------------------------------------------
;
; Analysis flags : ABMSdH
;
; A - Adjust online time remaining ■ 5
; Program modify the amount of online time remaining, this may
; be a way to bypass time limits
; ■ Search for : ADJTIME
;
; B - Brute hangup ■ 1
; Program hangup without notification. This may be a good way to
; disconnect a user, but if used randomly, may be very nasty
; ■ Search for : HANGUP, DTROFF
;
; M - Send text to modem only ■ 4
; Some informations are sent only to the modem, not to the local
; screen, this is a well known way to make stealth backdoors, Check!
; ■ Search for : SENDMODEM, MPRINT, MPRINTLN
;
; S - Shell to DOS ■ 5
; This may be normal if the PPE need to execute an external command,
; but may be actually anything... nasty (formating HD, rebooting,...)
; or usefull (sorting, maintenance,...). Check!
; ■ Search for : SHELL
;
; d - Access PCBOARD.DAT ■ 2
; Program gets the full pathname to PCBOARD.DAT, this may be usefull
; for many PPE so they can find various informations on the system
; (system paths, max number of lines in messages, ...) but it may also
; be a way to gather vital informations.
; ■ Search for : PCBDAT()
;
; H - Read Password or Password History ■ 5
; Program is reading the user's password or last password history
; This may be ok for a password manager, but it is very suspect. Check!
; ■ Search for : U_PWDHIST, U_PWD
;
;------------------------------------------------------------------------------
;
; Postprocessing report
;
; 7 For/Next
; 9 While/EndWhile
; 170 If/Then or If/Then/Else
; 7 Select Case
;
;------------------------------------------------------------------------------
; AEGiS Corp - Break the routines, code against the machines!
;------------------------------------------------------------------------------